<?php


namespace app\admin\controller;


use app\common\lib\Arr;
use app\common\lib\Status as StatusLib;
use think\Exception;
use think\facade\View;
use app\common\business\Category as CategoryBus;
class Category extends AdminBase
{
    public function index(){
        $pid = input("param.pid", 0, "intval");
        $data = [
            'pid' => $pid,
        ];
        try {
            $categorys = (new CategoryBus())->getLists($data, 5);
        }catch(Exception $e){
            //记录日志
            $categorys = Arr::getPaginateDefaultData(5);
        }
        return View::fetch("",[
            "categorys" => $categorys,
            'pid' => $pid
        ]);
    }
    public function add(){
        try {
            $categorys = (new CategoryBus())->getNormalCategorys();
        }catch(Exception $e){
            //记录日志
            $categorys = [];
        }
        return View::fetch("",[
            "categorys" => json_encode($categorys),
        ]);
    }

    public function save(){
        $pid = input("param.pid", 0, "intval");
        $name = input("param.name", "", "trim");
        // 参数校验
        $data = [
            'pid' => $pid,
            'name' => $name
        ];
        $validate = new \app\admin\validate\Category();
        if(!$validate->check($data)){
            return show(config('status.error'), $validate->getError());
        }
        try {
            $result = (new CategoryBus())->add($data);
        } catch(Exception $e){
            //记录日志
            return show(config("status.error"), $e->getMessage());
        }
        if($result){
            return show(config("status.success"), '新增成功');
        } else {
            return show(config("status.error"), '新增失败');
        }
    }

    public function listorder(){
        $id = input("param.id", 0, "intval");
        $listorder = input("param.listorder", 0, "intval");
        // validate验证机制
        if(!$id){
            return show(config('status.error'), '参数错误');
        }
        try {
            $res = (new CategoryBus())->listorder($id, $listorder);
        } catch(Exception $e){
            //记录日志
            return show(config('status.error'), $e->getMessage());
        }
        if($res){
            return show(config("status.success"), '排序成功');
        } else {
            return show(config('status.error'), '排序失败');
        }
    }

    public function status(){
        $status = input("param.status", 0, "intval");
        $id = input("param.id", 0, "intval");
        // validate验证机制 判断合法 0 1 99
        if(!$id || !in_array($status, StatusLib::getTableStatus())){
            return show(config('status.error'), '参数错误');
        }
        try {
            $res = (new CategoryBus())->status($id, $status);
        } catch(Exception $e){
            //记录日志
            return show(config('status.error'), $e->getMessage());
        }
        if($res){
            return show(config("status.success"), '状态更新成功');
        } else {
            return show(config('status.error'), '状态更新失败');
        }
    }

	// 获取正常的一级分类
    public function dialog(){
        $categorys = (new CategoryBus())->getNormalByPid();
        return view("",[
            "categorys" => json_encode($categorys),
        ]);
    }

	// 获取正常的二级分类
    public function getByPid(){
        $pid = input("param.pid", 0, "intval");
        $categorys = (new CategoryBus())->getNormalByPid($pid);
        return show(config('status.success'), "OK", $categorys);
    }
}
